pulumi/sdk/nodejs/resource.ts
joeduffy d3bd43fea9 Rename PropertyValue<T> to MaybeComputed<T>
As I started rolling this out, I realized that end user code actually
has to use this type sometimes.  And that the current names are inconsistent,
after eschewing Property<T> in favor of Computed<T>.  The new names read better.
2017-09-05 11:14:28 -07:00

33 lines
1.6 KiB
TypeScript

// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
import { Computed, MaybeComputed } from "./computed";
import * as runtime from "./runtime";
export type ID = string; // a provider-assigned ID.
export type URN = string; // an automatically generated logical URN, used to stably identify resources.
// Resource represents a class whose CRUD operations are implemented by a provider plugin.
export abstract class Resource {
// id is the provider-assigned unique ID for this object. It is set during deployments.
public readonly id: Computed<ID>;
// urn is the stable logical URN used to distinctly address an object, both before and after deployments.
public readonly urn: Computed<URN>;
// creates and registers a new resource object. t is the fully qualified type token and name is the "name" part
// to use in creating a stable and globally unique URN for the object.
constructor(t: string, name: string, props: {[key: string]: MaybeComputed<any> | undefined}) {
if (t === undefined || t === "") {
throw new Error("Missing resource type argument");
}
if (name === undefined || name === "") {
throw new Error("Missing resource name argument (for URN creation)");
}
// Now kick off the resource registration. If we are actually performing a deployment, this resource's
// properties will be resolved asynchronously after the operation completes, so that dependent computations
// resolve normally. If we are just planning, on the other hand, values will never resolve.
runtime.registerResource(this, t, name, props);
}
}